/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package entity;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
 * Classe Entity che rappresenta il Prodotto nel database
 * @author giosk
 */
@Entity
public class Prodotto implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String codice;
    private String nome;
    private double prezzo;
    private String descrizione;


    /**
     * Restituisce il codice del prodotto
     * @return il codice del prodotto
     */
    public String getCodice() {
        return codice;
    }

    /**
     * Imposta il codice del prodotto
     * @param codice il nuovo codice del prodotto
     */
    public void setCodice(String codice) {
        this.codice = codice;
    }

    /**
     * Restituisce la descrizione del prodotto
     * @return la descrizione del prodotto
     */
    public String getDescrizione() {
        return descrizione;
    }

    /**
     * Imposta la descrizione del prodotto
     * @param descrizione la nuova descrizione del prodotto
     */
    public void setDescrizione(String descrizione) {
        this.descrizione = descrizione;
    }

    /**
     * Restituisce il nome del prodotto
     * @return il nome del prodotto
     */
    public String getNome() {
        return nome;
    }

    /**
     * Imposta il nuovo nome del prodotto
     * @param nome il nuovo nome del prodotto
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * Restituisce il prezzo del prodotto
     * @return il prezzo del prodotto
     */
    public double getPrezzo() {
        return prezzo;
    }

    /**
     * Imposta il nuovo prezzo del prodotto
     * @param prezzo il nuovo prezzo del prodotto
     */
    public void setPrezzo(double prezzo) {
        this.prezzo = prezzo;
    }

    /**
     * Restituisce l'ID del prodotto
     * @return l'ID del prodott
     */
    public Long getId() {
        return id;
    }

    /**
     * Imposta l'ID del prodotto
     * @param id il nuovo id del prodotto
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * Restituisce un hashcode per questa istanza
     * @return
     */
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    /**
     * Restituisce true se l'object e non nullo e se entrambi gli ID sono uguali
     * false altrimenti
     * @param object l'oggetto da controllare
     * @return true se l'object e non nullo e se l'id di object è uguale all'id del prodotto, false altrimenti
     */
    @Override
    public boolean equals(Object object) {
        if (!(object instanceof Prodotto)) {
            return false;
        }
        Prodotto other = (Prodotto) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    /**
     * Restituisce una stringa nel formato entity.Prodotto[id=" + id + "]
     * @return
     */
    @Override
    public String toString() {
        return "entity.Prodotto[id=" + id + "]";
    }

}
